library(tidyverse)
## ── Attaching packages ─────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0     ✓ purrr   0.3.4
## ✓ tibble  3.0.1     ✓ dplyr   0.8.5
## ✓ tidyr   1.0.3     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.5.0
## ── Conflicts ────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
theme_set(theme_light())
tuesdata <- tidytuesdayR::tt_load('2020-05-12')
## --- Downloading #TidyTuesday Information for 2020-05-12 ----
## --- Identified 5 files available for download ----
## --- Downloading files ---
## --- Download complete ---
volcano <- tuesdata$volcano %>% 
  mutate(last_eruption_year = as.numeric(last_eruption_year))
## Warning: NAs introduced by coercion
# View(volcano)
volcano %>% 
  count(evidence_category, sort = TRUE)
## # A tibble: 5 x 2
##   evidence_category      n
##   <chr>              <int>
## 1 Eruption Observed    428
## 2 Eruption Dated       226
## 3 Evidence Credible    193
## 4 Evidence Uncertain    84
## 5 Unrest / Holocene     27
volcano %>% 
  #mutate(last_eruption_year = as.numeric(last_eruption_year)) %>%
  ggplot(aes(last_eruption_year, fill = evidence_category)) +
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 301 rows containing non-finite values (stat_bin).

volcano %>% 
  mutate(years_ago = 2020 - last_eruption_year) %>%
  ggplot(aes(years_ago +1, fill = evidence_category)) +
  geom_histogram() +
  scale_x_log10()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 301 rows containing non-finite values (stat_bin).

# here was a parenthesis
volcano %>% 
  filter(evidence_category == "Eruption Observed") %>% 
  arrange(last_eruption_year) %>% 
  select(last_eruption_year, volcano_name, country)#%>% View()
## # A tibble: 428 x 3
##    last_eruption_year volcano_name    country     
##                 <dbl> <chr>           <chr>       
##  1              -1320 Yucamane        Peru        
##  2               -258 Methana         Greece      
##  3               -104 Vulsini         Italy       
##  4                500 Arhab, Harra of Yemen       
##  5                650 Khaybar, Harrat Saudi Arabia
##  6                837 Naruko          Japan       
##  7                838 Kozushima       Japan       
##  8                867 Yufu-Tsurumi    Japan       
##  9                885 Ata             Japan       
## 10                886 Niijima         Japan       
## # … with 418 more rows
# here was a parenthesis
eruptions <- tuesdata$eruptions

eruptions %>% 
  mutate(years_ago = 2020 - start_year) %>%
  ggplot(aes(years_ago +1, fill = eruption_category)) +
  geom_histogram() +
  scale_x_log10()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (stat_bin).

volcano %>% count(region, sort=TRUE)
## # A tibble: 19 x 2
##    region                             n
##    <chr>                          <int>
##  1 South America                    117
##  2 Japan, Taiwan, Marianas          102
##  3 Indonesia                         95
##  4 México and Central America        93
##  5 Africa and Red Sea                79
##  6 Kamchatka and Mainland Asia       78
##  7 Canada and Western USA            60
##  8 Melanesia and Australia           45
##  9 Alaska                            38
## 10 Mediterranean and Western Asia    35
## 11 Philippines and SE Asia           33
## 12 Iceland and Arctic Ocean          29
## 13 New Zealand to Fiji               29
## 14 Middle East and Indian Ocean      27
## 15 Antarctica                        25
## 16 Kuril Islands                     25
## 17 Atlantic Ocean                    21
## 18 West Indies                       16
## 19 Hawaii and Pacific Ocean          11
volcano %>% count(primary_volcano_type, sort = TRUE)
## # A tibble: 26 x 2
##    primary_volcano_type     n
##    <chr>                <int>
##  1 Stratovolcano          353
##  2 Stratovolcano(es)      107
##  3 Shield                  85
##  4 Volcanic field          71
##  5 Pyroclastic cone(s)     70
##  6 Caldera                 65
##  7 Complex                 46
##  8 Shield(s)               33
##  9 Submarine               27
## 10 Lava dome(s)            26
## # … with 16 more rows
library(ggthemes)
volcano %>%
  ggplot(aes(longitude, latitude)) +
  geom_point() +
  borders() +
  theme_map()

volcano %>%
  mutate(primary_volcano_type = fct_lump(primary_volcano_type, 8)) %>%
  ggplot(aes(longitude, latitude)) +
  borders() +
  geom_point(aes(color = primary_volcano_type)) +
  theme_map()

# here we remove the plurals in the categories in the previous plot, change the total category to 6, set the size of the point, labelled the graph
volcano %>%
  mutate(primary_volcano_type = str_remove(primary_volcano_type, "\\(.*\\)"),
         primary_volcano_type = fct_lump(primary_volcano_type, 6)) %>%
  ggplot(aes(longitude, latitude)) +
  borders() +
  geom_point(aes(color = primary_volcano_type), size = .5) +
  theme_map() +
  labs(title = "Volcanoes of the World", color = "Type")

library(leaflet) # To make the above graph interactive

leaflet(volcano) %>% 
  addTiles() %>% 
  addCircles(lat = ~latitude, lng = ~longitude) 
leaflet(volcano) %>% 
  addTiles() %>% 
  addCircleMarkers(lat = ~ latitude, 
                   lng = ~ longitude,
                   popup = ~ volcano_name)
library(glue)
## 
## Attaching package: 'glue'
## The following object is masked from 'package:dplyr':
## 
##     collapse
template <- "<p>{ volcano_name }</p><p>{ primary_volcano_type }</p>"
volcano_html <- volcano %>% 
  select(volcano_name, latitude, longitude, primary_volcano_type, region) %>%
  mutate(html = glue(template),
         primary_volcano_type = str_remove(primary_volcano_type, "\\(.*\\)"))

volcano_html %>% 
  filter(region == "South America") %>%
  leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(lat = ~ latitude, 
                   lng = ~ longitude,
                   popup = ~ html) 
library(DT)
template <- "<p>{ volcano_name }</p><p>{ primary_volcano_type }</p>"
#volcano_html <- volcano %>% 
volcano %>% 
  filter(region == "South America") %>%
  gather(key, value, volcano_name, primary_volcano_type, last_eruption_year) %>%
  nest(data = c(key, value)) %>%
  mutate(html = map(data, datatable)) %>%
  pull(html) %>%
  pluck(1)
library(DT)
volcano %>% 
  filter(region == "South America") %>%
  gather(key, value, volcano_name, primary_volcano_type, last_eruption_year) %>%
  mutate(key = str_to_title(str_replace_all(key, "_", " "))) %>%
  nest(data = c(key, value)) %>%
  mutate(html = map(data, datatable, rownames = FALSE, colnames = c("", ""))) %>%
  pull(html) %>%
  pluck(1)
library(DT)
volcano %>% 
  filter(region == "South America") %>%
  mutate(primary_volcano_type = str_remove(primary_volcano_type, "\\(.*\\)")) %>%
  gather(key, value, volcano_name, primary_volcano_type, last_eruption_year) %>%
  mutate(key = str_to_title(str_replace_all(key, "_", " ")),
         key = paste0("<b>", key, "</b>")) %>%
  replace_na(list(value = "Unknown")) %>%
  nest(data = c(key, value)) %>%
  mutate(html = map(data,
                    knitr::kable, 
                    format = "html",
                    escape = FALSE,
                    col.names = c("",""))) %>%
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(lat = ~ latitude, 
                   lng = ~ longitude,
                   popup = ~ html) 
volcano %>% 
  #filter(region == "South America") %>%
  mutate(primary_volcano_type = str_remove(primary_volcano_type, "\\(.*\\)")) %>%
  gather(key, value, 
         volcano_name, 
         primary_volcano_type, 
         last_eruption_year,
         country,
         tectonic_settings,
         population_within_5_km) %>%
  mutate(key = str_to_title(str_replace_all(key, "_", " ")),
         key = paste0("<b>", key, "</b>")) %>%
  replace_na(list(value = "Unknown")) %>%
  nest(data = c(key, value)) %>%
  mutate(html = map(data,
                    knitr::kable, 
                    format = "html",
                    escape = FALSE,
                    col.names = c("",""))) %>%
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(lat = ~ latitude, 
                   lng = ~ longitude,
                   popup = ~ html) %>%
  addMeasure()
volcano %>% 
  mutate(primary_volcano_type = str_remove(primary_volcano_type, "\\(.*\\)"),
         transformed_pop = log2(population_within_5_km + 1),
         pop_color = colorNumeric(c("blue", "red"), transformed_pop)(transformed_pop)) %>%
  gather(key, value, 
         volcano_name, 
         primary_volcano_type, 
         last_eruption_year,
         country,
         tectonic_settings,
         population_within_5_km) %>%
  mutate(key = str_to_title(str_replace_all(key, "_", " ")),
         key = paste0("<b>", key, "</b>")) %>%
  replace_na(list(value = "Unknown")) %>%
  nest(data = c(key, value)) %>%
  mutate(html = map(data,
                    knitr::kable, 
                    format = "html",
                    escape = FALSE,
                    col.names = c("",""))) %>%
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(lat = ~ latitude, 
                   lng = ~ longitude,
                   color = ~ pop_color,
                   popup = ~ html,
                   radius = 1) %>%
  addMeasure()
eruptions %>%
  ggplot(aes(2020 - start_year)) +
  geom_histogram() +
  scale_x_log10()
## Warning: Transformation introduced infinite values in continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 8 rows containing non-finite values (stat_bin).

eruptions %>%
  filter(start_year >= 1900) %>%
  mutate(volume = .00001*10^vei) %>%
  ggplot(aes(longitude, latitude)) +
  borders() +
  geom_point(aes(size = volume,
                 color = volume)) +
  theme_map() +
  scale_color_gradient2(low = "blue", high = "red",
                       midpoint = log10(.01),
                       guide = FALSE) +
  scale_size_continuous(range = c(.1, 6)) +
  labs(title = "Eruptions Since 1900",
       size = "km^3")
## Warning: Removed 311 rows containing missing values (geom_point).

library(gganimate)
animated_graph <- eruptions %>%
  filter(start_year >= 1900) %>%
  mutate(volume = .00001*10^vei) %>%
  ggplot(aes(longitude, latitude)) +
  borders() +
  geom_point(aes(size = volume,
                 color = volume)) +
  theme_map() +
  scale_color_gradient2(low = "blue", high = "red",
                       midpoint = log10(.01),
                       trans = "log10",
                       guide = FALSE) +
  scale_size_continuous(range = c(1, 6)) +
  transition_time(start_year) +
  labs(title = "Eruptions Year { round(frame_time) }",
       size = "km^3") +
  theme(legend.position = "none")

animate(animated_graph, 150, fps = 4)
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 9 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).

## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 8 rows containing missing values (geom_point).
## Warning: Removed 7 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 7 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).

## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 7 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 7 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).

## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).

## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).

## Warning: Removed 2 rows containing missing values (geom_point).

## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).

## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).

## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 6 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).

## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 24 rows containing missing values (geom_point).
## Warning: Removed 7 rows containing missing values (geom_point).

anim_save("eruptions.gif")